pie_chart
국가별 관광객이 한국을 방문할 때 고려하는 요인을 다시 그린다. 지난 중간 발표 때 파이 차트(Pie Chart)를 그렸던 것이 ‘항목별 차이가 제대로 보이지 않는다’는 지적을 받았다. 자료의 각 범주를 뚜렷하게 구별해 보일 수 있는 방법으로 stacked barplot을 그린다. 파이 차트가 각도(angle)의 차이로 범주별 비중을 나타낸다면 stacked barplot은 개별 막대의 높이로 관측 빈도의 차이를 나타낸다.
data 변수 중 목적_1위, 목적_2위, 목적_3위가 한국 방문을 선택하게 한 요인에 해당한다.
## [1] 96219
기존에 파이 차트로 그린 데이터는 원 데이터를 분석한 결과가 아닌, 한국관광공사가 정리한 결과 보고서를 바탕으로 그린 그림이었다. 이번에 그릴 barplot은 범주별 관측값을 직접 세야 하기 때문에 원 데이터를 참고한다. 그런데, 원 데이터 통해 확인한 방문 요인은 모두 17개로, 파이 차트에 반영된 범주(8)개보다 많다. 범주가 너무 많으면 분석 결과도 뚜렷하게 보이기 힘드니, 8개 범주로 데이터를 병합한다.
## [1] "K-POP/ 한류스타 관련 팬 미팅, 촬영지 등 경험"
## [2] "경제적인 여행비용"
## [3] "기타"
## [4] "기후/ 뚜렷한 사계절"
## [5] "레저 및 스포츠 활동"
## [6] "쇼핑"
## [7] "숙박/ 교통 등 관광 편리성 및 안전성"
## [8] "역사/문화 유적 탐방"
## [9] "유흥/놀이 시설"
## [10] "음식/미식 탐방"
## [11] "자국과의 이동 거리"
## [12] "자연 풍경 감상"
## [13] "치료 및 미용 서비스"
## [14] "친구, 친지 방문"
## [15] "템플스테이 태권도 등 한국 전통 문화 체험"
## [16] "패션, 유행 등 세련된 현대 문화"
## [17] "휴가 시간"
한국관광공사가 발표한 방문 목적 8개는 다음과 같다 : 쇼핑, 식도락, 역사.유적지, 자연.풍경.감상, 친구, 케이팝, 패션.트렌드, 휴식
원 데이터에 있는 17개 범주 중 [2] [3] [4] [7] [11]은 관광 편의로 새로 지정한다. [1]은 케이팝 [8][15]는 역사와 유적 [16]은 패션과 트렌드로 이름 바꾼다.
index <- purpose %in% purposes[c(2,3,4,7,11)]
levels(purpose) <- c("케이팝", "관광 편의", "관광 편의", "관광 편의", "레저 및 스포츠", "쇼핑", "관광 편의", "역사와 유적", "휴식", "식도락", "관광 편의", "자연 및 풍경", "관광 편의", "지인 방문", "역사와 유적", "패션과 트렌드", "휴식")
data[, which(colnames(data)=="목적_1위")] <- purpose
print(unique(purpose))## [1] 식도락 자연 및 풍경 패션과 트렌드 쇼핑
## [5] 지인 방문 케이팝 휴식 역사와 유적
## [9] 관광 편의 레저 및 스포츠
## 10 Levels: 케이팝 관광 편의 레저 및 스포츠 쇼핑 역사와 유적 ... 패션과 트렌드
pie_chart
library(plotly)
library(RColorBrewer)
purpose_of_visit <- data[, which(colnames(data) %in% c("목적_1위", "국적"))]
colnames(purpose_of_visit) <- c("purpose", "nationality")
purpose_of_visit %>%
count(nationality, purpose) %>%
#group_by(nationality, purpose) %>%
#mutate(rate = round(n / sum(n)*100, 2)) %>%
#plot_ly(x = ~nationality, y = ~ paste(rate, "%", sep=""), color = ~purpose) %>%
plot_ly(x = ~nationality, y = ~ n, color = ~purpose, colors = brewer.pal(n = length(purposes), name = "Set2")) %>%
add_bars() %>%
layout(barmode = "stack")plotly() : 인터랙티브 시각화를 그렸다. 개별 막대에 커서를 올리면 해당 국가와 응답자 수를 볼 수 있다. 비율(%) 대신 응답자 수를 표시한 것은, ‘얼마나 많은 관광객이 해당 목적으로 한국을 방문했는가’ 구체적인 숫자를 제시하기 위함이다.
RColorBrewer() : plotly()가 기본으로 제공하는 색깔을 사용하면 색이 조금 흐릿하다. 이에, RColorBrewer() 패키지에 있는 내장 팔레트를 사용한다. 관광 목적은 범주형 자료기 때문에 서로 연관 없는 색 8개를 골랐다.
위와 같이 그린 인터랙티브 시각화-Stacked bar plot은 기존에 그린 파이 차트와 비교할 때 몇 가지 장점이 있다. 첫 째, 국가별 막대 길이를 통해 나라별로 얼마나 많은 관광객이 찾았는지 알 수 있다. 둘째, 색깔별로 다른 막대의 길이 차이가 확연하게 보여, 관광 목적 중 무엇이 주요한지 알 수 있다. 마지막으로, 인터랙티브 시각화를 했기 때문에 막대 길이의 차이가 모호하면 커서를 올려 구체적인 수치를 알 수 있다. 이에, 파이 차트를 쓰는 것보다 Stacked barplot, 특히 인터랙티브한 그래프를 그릴 때 필요한 정보를 효과적으로 전달할 수 있다.